home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
keyb
/
dce.zip
/
DCE.SRC
< prev
next >
Wrap
Text File
|
1989-02-06
|
17KB
|
540 lines
' ***** DCE ** (C)1988-89, by GNA. *****
'═════════════════════════════════════════════════════════════════════════════
$SOUND 32
DEFINT E-Y:DEFDBL D,T,Z
Logiciel$="DCE":DebTemps&=TIMER
'═════════════════════════════════════════════════════════════════════════════
' *** initialize registers ***
%AX=1:%BX=2:%CX=3:%DX=4:%SI=5:%DI=6:%BP=7:%DS=8:%ES=9:%Status=0
' *** initialize variables ***
Ins=1:Marge=8:NoDerCde=0:Cour=0:Ecran=0:Comm$=UCASE$(COMMAND$)
%MaxCar=127:%MaxLig=46:%MaxCde=20:Vers$="9.4":Curs$=CHR$(219):DiskUtil$=""
Disk$="":Cde$="":DebCde$="":FinCde$="":Temp$="":Form$="####":Depr$="99:99"
Alarme$=Depr$:Deprog$=Logiciel$+CHR$(32)+"Alarm"+CHR$(32)+"inactive!"
Retour$="Return to":DIM Stor$(%MaxCde):DIM Debut(5):DIM CharSauv(6,74)
FlgCde=0:FlgCalc=0:FlgDate=0:FlgEDC=0:FlgSpec=0:FlgDisk=0:FlgAidePos=0
FlgAlrm=0:FlgAide=0:FlgASCII=0:FlgBell=0:FlgHorl=0:FlgGraph=0
' *** static tab of 32 consecutives integers ***
DIM STATIC NivRep(32)
Segment&=VARSEG(NivRep(0)):Offset&=VARPTR(NivRep(0))
'═════════════════════════════════════════════════════════════════════════════
' *** the DCE's musics ***
MusiAir$="MBL32O3CDEF":MusiErr$="MBL64O3FEDC"
' *** if an ERROR occurs ***
ON ERROR GOTO ERREUR
'═════════════════════════════════════════════════════════════════════════════
' *** 80 columns, B&W mode and clear screen ***
WIDTH 80:COLOR 7,0:CLS
'═════════════════════════════════════════════════════════════════════════════
' *** verify the hardware & software environment ***
$INCLUDE "DCESTART.SRC"
'═════════════════════════════════════════════════════════════════════════════
' *** abstracts ***
IF (Comm$="") THEN
C$(1)= CHR$(201)+STRING$(43,205)+CHR$(187)
C$(2)= CHR$(186)+SPACE$(43)+CHR$(186)
C$(3)= CHR$(186)+SPACE$(13)+"***"+SPACE$(2)+Logiciel$+CHR$(32)+Vers$+_
SPACE$(2)+"***"+SPACE$(13)+CHR$(186)
C$(4)= CHR$(186)+SPACE$(43)+CHR$(186)
C$(5)= CHR$(186)+SPACE$(9)+"DOS"+SPACE$(2)+"Commands"+CHR$(32)+_
"line"+CHR$(32)+"Editor"+SPACE$(9)+CHR$(186)
C$(6)= CHR$(186)+CHR$(32)+"memorize the twenty later single commands"+_
CHR$(32)+CHR$(186)
C$(7)= CHR$(186)+SPACE$(43)+CHR$(186)
C$(8)= CHR$(186)+SPACE$(7)+"Copyright"+CHR$(32)+"(c)1988-89,"+_
CHR$(32)+"by"+SPACE$(2)+"GNA"+SPACE$(7)+CHR$(186)
C$(9)= CHR$(186)+SPACE$(43)+CHR$(186)
C$(10)=CHR$(200)+STRING$(43,205)+CHR$(188)
LigTaille=LEN(C$(1)):Lig=8:Col=80-LigTaille:Milieu=40
' *** swing ... ***
COLOR 3,0
FOR I=1 TO 17
FOR J=1 TO 9 STEP 2
LOCATE Lig+J,I:PRINT CHR$(32);C$(J)
LOCATE Lig+J+1,Col-I:PRINT C$(J+1);CHR$(32)
NEXT J
DELAY(0.03)
NEXT I
Col=19
LOCATE Lig+3,Col:COLOR 14,0:PRINT MID$(C$(3),2,LigTaille-2)
LOCATE Lig+5,Col:COLOR 15,0:PRINT MID$(C$(5),2,LigTaille-2)
LOCATE Lig+6,Col:COLOR 15,0:PRINT MID$(C$(6),2,LigTaille-2)
LOCATE Lig+8,Col:COLOR 12,0:PRINT MID$(C$(8),2,LigTaille-2)
DELAY(3)
PLAY MusiAir$
COLOR 7,0:CLS
' *** how to get help ***
C$(1)=Logiciel$+SPACE$(2)+"version "+Vers$
C$(2)="To get some help, type [F1]"
C$(3)="Use numeric keypad arrows keys to edit"
C$(4)="Type [Esc] to exit from"+CHR$(32)+Logiciel$
C$(5)=CHR$(179)+SPACE$(5)+_
"You must let the DOS system disk in the A: drive"+_
SPACE$(5)+CHR$(179)
C$(6)=CHR$(179)+CHR$(32)+_
"and put your work disk (not protected) into the B: drive"+_
CHR$(32)+CHR$(179)
' *** exploding !!! ***
FOR Lig=10 TO 16 STEP 2
Cour=Lig/2-4:Decal=0
FOR Col=Milieu TO Milieu-LEN(C$(Cour))/2+1 STEP -1
Decal=Decal+1
LOCATE Lig,Col:PRINT LEFT$(C$(Cour),Decal);RIGHT$(C$(Cour),Decal)
DELAY(0.03)
NEXT Col
NEXT Lig
LOCATE 10,Milieu-LEN(C$(1))/2+1:COLOR 14,0:PRINT C$(1)
' *** malheureux possesseur d'un PC à seulement deux drives ***
IF DiskUtil$="B:\" THEN
LOCATE 19,Milieu-LEN(C$(5))/2+1
COLOR 12,0:PRINT CHR$(218)+STRING$(LEN(C$(5))-2,196)+CHR$(191)
LOCATE 20,Milieu-LEN(C$(5))/2+1:COLOR 12,0:PRINT C$(5)
LOCATE 21,Milieu-LEN(C$(5))/2+1:COLOR 12,0:PRINT C$(6)
LOCATE 22,Milieu-LEN(C$(5))/2+1
COLOR 12,0:PRINT CHR$(192)+STRING$(LEN(C$(5))-2,196)+CHR$(217)
END IF
ELSE
PLAY MusiAir$
END IF
'═════════════════════════════════════════════════════════════════════════════
' *** empty keyboard buffer ***
REG %AX,&H0C00
CALL INTERRUPT &H21
' *** display the first window with virgin command line ***
GOSUB ECRAN
'═════════════════════════════════════════════════════════════════════════════
' *** main loop ***
DO
' *** reads keyboard buffer and write character in command line ***
DO
IF FinCde$="" THEN
LOCATE 25,Posit:COLOR 31,4:PRINT Curs$;
ELSE
LOCATE 25,Posit:COLOR 31,4:PRINT LEFT$(FinCde$,1);
END IF
FlgAidePos=1
GOSUB ATTEND
IF FinCde$="" THEN
LOCATE 25,Posit:COLOR 11,1:PRINT CHR$(32);
ELSE
LOCATE 25,Posit:COLOR 11,1:PRINT LEFT$(FinCde$,1);
END IF
X=LEN(A$)
SELECT CASE X
CASE 1
Y=ASC(A$)
SELECT CASE Y
' *** use of [<=] key to erase preceeding cursor character ***
CASE 08
IF LEN(DebCde$)>0 THEN
DebCde$=LEFT$(DebCde$,LEN(DebCde$)-1)
GOSUB ECRIT
ELSE
IF FlgBell=0 THEN PLAY MusiErr$
END IF
' *** test for [<┘] key to accept the command line ***
CASE 13
Cde$=DebCde$+FinCde$:DebCde$="":FinCde$=""
GOSUB ECRIT
IF Cde$<>"" THEN
IF LEN(Cde$)>2 THEN
IF (UCASE$(LEFT$(Cde$,3))=Logiciel$ OR_
UCASE$(RIGHT$(Cde$,3))=Logiciel$) THEN
FlgEDC=1:Cour=NoDerCde
END IF
END IF
IF FlgEDC=0 THEN
FOR I=1 TO NoDerCde
IF UCASE$(Stor$(I-1))=UCASE$(Cde$) THEN
FlgCde=1:PosCde=I:I=NoDerCde
END IF
NEXT I
IF FlgCde=0 THEN
IF NoDerCde>%MaxCde-1 THEN
FOR I=1 TO %MaxCde-1
Stor$(I-1)=Stor$(I)
NEXT I
NoDerCde=NoDerCde-1
END IF
ELSE
FOR I=PosCde TO NoDerCde-1
Stor$(I-1)=Stor$(I)
NEXT I
NoDerCde=NoDerCde-1:FlgCde=0
END IF
Stor$(NoDerCde)=Cde$:NoDerCde=NoDerCde+1
Cour=NoDerCde
END IF
END IF
EXIT LOOP
' *** [ESC] to quit DCE ***
CASE 27
IF FlgBell<>0 THEN
SOUND 440,0:Alarme$=Depr$:FlgBell=0
ELSE
T$="":T=0
WHILE T=0
T=INT(TIMER-DebTemps&)
WEND
H=INT(T/3600.0)
IF H>0 THEN
T$=T$+STR$(H)+" hour"
IF H>1 THEN
T$=T$+"s"
END IF
END IF
T=T-H*3600.0:H=INT(T/60.0)
IF H>0 THEN
T$=T$+STR$(H)+" minute"
IF H>1 THEN